65 research outputs found

    Happiness and the productivity of software engineers

    Full text link
    Software companies and startups often follow the idea of flourishing happiness among developers. Perks, playground rooms, free breakfast, remote office options, sports facilities near the companies, company retreats, you name it. The rationale is that happy developers should be more productive and also retained. But is it the case that happy software engineers are more productive? Moreover, are perks the way to go to make developers happy? Are developers happy at all? What are the consequences of unhappiness among software engineers? These questions are important to ask both from the perspective of productivity and from the perspective of sustainable software development and well-being in the workplace. Managers, team leaders, as well as team members should be interested in these concerns. This chapter provides an overview of our studies on the happiness of software developers. You will learn why it is important to make software developers happy, how happy they really are, what makes them unhappy, and what is expected regarding happiness and productivity while developing software.Comment: 12 pages, 2 figures. To appear in Rethinking Productivity in Software Engineering, edited by Caitlin Sadowski and Thomas Zimmermann. arXiv admin note: text overlap with arXiv:1707.0043

    Consequences of Unhappiness While Developing Software

    Full text link
    The growing literature on affect among software developers mostly reports on the linkage between happiness, software quality, and developer productivity. Understanding the positive side of happiness -- positive emotions and moods -- is an attractive and important endeavor. Scholars in industrial and organizational psychology have suggested that also studying the negative side -- unhappiness -- could lead to cost-effective ways of enhancing working conditions, job performance, and to limiting the occurrence of psychological disorders. Our comprehension of the consequences of (un)happiness among developers is still too shallow, and is mainly expressed in terms of development productivity and software quality. In this paper, we attempt to uncover the experienced consequences of unhappiness among software developers. Using qualitative data analysis of the responses given by 181 questionnaire participants, we identified 49 consequences of unhappiness while doing software development. We found detrimental consequences on developers' mental well-being, the software development process, and the produced artifacts. Our classification scheme, available as open data, will spawn new happiness research opportunities of cause-effect type, and it can act as a guideline for practitioners for identifying damaging effects of unhappiness and for fostering happiness on the job.Comment: 6 pages. To be presented at the Second International Workshop on Emotion Awareness in Software Engineering, colocated with the 39th International Conference on Software Engineering (ICSE'17). Extended version of arXiv:1701.02952v2 [cs.SE

    Developer Experience : Concept and Definition

    Get PDF
    New ways of working such as globally distributed development or the integration of self-motivated external developers into software ecosystems will require a better and more comprehensive understanding of developers' feelings, perceptions, motivations and identification with their tasks in their respective project environments. User experience is a concept that captures how persons feel about products, systems and services. It evolved from disciplines such as interaction design and usability to a much richer scope that includes feelings, motivations, and satisfaction. Similarly, developer experience could be defined as a means for capturing how developers think and feel about their activities within their working environments, with the assumption that an improvement of the developer experience has positive impacts on characteristics such as sustained team and project performance. This article motivates the importance of developer experience, sketches related approaches from other domains, proposes a definition of developer experience that is derived from similar concepts in other domains, describes an ongoing empirical study to better understand developer experience, and finally gives an outlook on planned future research activities.Peer reviewe

    Peer Assessment in Experiential Learning : Assessing Tacit and Explicit Skills in Agile Software Engineering Capstone Projects

    Get PDF
    To prepare students for real-life software engineering projects, many higher-education institutions offer courses that simulate working life to varying degrees. As software engineering requires not only technical, but also inter- and intrapersonal skills, these skills should also be assessed. Assessing soft skills is challenging, especially when project-based and experiential learning are the primary pedagogical approaches. Previous work suggests that including students in the assessment process can yield a more complete picture of student performance. This paper presents experiences with developing and using a peer assessment framework that provides a 360-degree view on students' project performance. Our framework has been explicitly constructed to accommodate and evaluate tacit skills that are relevant in agile software development. The framework has been evaluated with 18 bachelors- and 11 masters-level capstone projects, totaling 176 students working in self-organized teams. We found that the framework eases teacher workload and allows a more thorough assessment of students' skills. We suggest including self- and peer assessment into software capstone projects alongside other, more traditional schemes like productivity metrics, and discuss challenges and opportunities in defining learning goals for tacit and social skills.Peer reviewe

    Collecting data from distributed FOSS projects

    Get PDF
    A key trait of Free and Open Source Software (FOSS) development is its distributed nature. Nevertheless, two project-level operations, the fork and the merge of program code, are among the least well understood events in the lifespan of a FOSS project. Some projects have explicitly adopted these operations as the primary means of concurrent development. In this study, we examine the effect of highly distributed software development, is found in the Linux kernel project, on collection and modelling of software development data. We find that distributed development calls for sophisticated temporal modelling techniques where several versions of the source code tree can exist at once. Attention must be turned towards the methods of quality assurance and peer review that projects employ to manage these parallel source trees. Our analysis indicates that two new metrics, fork rate and merge rate, could be useful for determining the role of distributed version control systems in FOSS projects. The study presents a preliminary data set consisting of version control and mailing list data.Peer reviewe

    A Platform for Teaching Applied Distributed Software Development : The Ongoing Journey of the Helsinki Software Factory

    Get PDF
    Teaching distributed software development (DSD) in project courses where student teams are geographically distributed promises several benefits. One main benefit is that in contrast to traditional classroom courses, students can experience the effects of distribution and the mechanisms for coping with distribution by themselves, therefore understanding their relevance for software development. They can thus learn to take more care of distribution challenges and risks when starting to develop software in industry. However, providing a sustainable environment for such project courses is difficult. A development environment is needed that can connect to different distributed teams and an ongoing routine to conduct such courses needs to be established. This article sketches a picture of the Software Factory, a platform that supports teaching distributed student projects and that has now been operational for more than three years. We describe the basic steps of conducting Software Factory projects, and portray experiences from past factory projects. In addition, we provide a short overview of related approaches and future activities.Peer reviewe

    Fallstudier i Lean- och Agile- samt öppen programvaruutveckling

    Get PDF
    Human factors have been identified as having the largest impact on performance and quality in software development. While production methods and tools, such as development processes, methodologies, integrated development environments, and version control systems, play an important role in modern software development, the largest sources of variance and opportunities for improvement can be found in individual and group factors. The success of software development projects is highly dependent on cognitive, conative, affective, and social factors among individuals and groups. When success is considered to include not only fulfilment of schedules and profitability, but also employee well-being and public impact, particular attention must be paid to software developers and their experience of the software development activity. This thesis uses a mixed-methods research design, with case studies conducted in contemporary software development environments, to develop a theory of software developer experience. The theory explains what software developers experience as part of the development activity, how an experience arises, how the experience leads to changes in software artefacts and the development environment through behaviour, and how the social nature of software development mediates both the experience and outcomes. The theory can be used both to improve software development work environments and to design further scientific studies on developer experience. In addition, the case studies provide novel insights into how software developers experience software development in contemporary environments. In Lean-Agile software development, developers are found to be engaged in a continual cycle of Performance Alignment Work, where they become aware of, interpret, and adapt to performance concerns on all levels of an organisation. High-performing teams can successfully carry out this cycle and also influence performance expectations in other parts of the organisation and beyond. The case studies show that values arise as a particular concern for developers. The combination of Lean and Agile software development allows for a great deal of flexibility and self-organisation among developers. As a result, developers themselves must interpret the value system inherent in these methodologies in order to inform everyday decision-making. Discrepancies in the understanding of the value system may lead to different interpretations of what actions are desirable in a particular situation. Improved understanding of values may improve decision-making and understanding of Lean-Agile software development methodologies among software developers. Organisations may wish to clarify the value system for their particular organisational culture and promote values-based leadership for their software development projects. The distributed nature and use of virtual teams in Open Source environments present particular challenges when new members are to join a project. This thesis examines mentoring as a particular form of onboarding support for new developers. Mentoring is found to be a promising approach which helps developers adopt the practices and tacit conventions of an Open Source project community, and to become contributing members more rapidly. Mentoring could also have utility in similar settings that use virtual teams.Ohjelmistokehitysprojektien suorituskyky ja menestys ovat vahvasti riippuvaisia yksilön ajattelu-, motivaatio- ja tunneseikoista sekä ryhmäprosesseista. Ohjelmistokehittäjien kokemus kehitystoiminnasta on tärkeä menestystekijä, jota toistaiseksi ei ole kuitenkaan kattavasti ymmärretty. Väitöskirjassa kehitetään teoria kehittäjäkokemuksesta tapaustutkimusten avulla. Teoriaa voi käyttää parantamaan ohjelmistokehityksen työympäristöjä ja se voi toimia uusien tieteellisten tutkimusten viitekehyksenä. Lisäksi väitöskirja esittelee uutta tietoa kehittäjäkokemuksesta nykyaikaisessa ohjelmistokehityksessä. Virtaviivaisessa (Lean) ja ketterässä (Agile) ohjelmistokehityksessä kehittäjät kokevat korkean suorituskyvyn tavoittelun jatkuvana tiedostamisen, tulkinnan ja sopeutumisen syklinä. Huipputiimit kykenevät onnistuneesti toteuttamaan tätä sykliä ja samalla vaikuttamaan suorituskykyodotuksiin organisaatiossa ja sen ulkopuolella. Väitöstutkimuksen mukaan arvot nousevat esiin erityisenä kysymyksenä kehittäjille. Virtaviivainen ja ketterä ohjelmistotuotanto korostaa arvoina muun muassa yksilöiden välistä vapaamuotoista vuorovaikutusta, asiakasyhteistyötä ja myönteistä suhtautumista muutoksiin. Tutkimus osoittaa kuitenkin, että ymmärrys arvoista vaihtelee ja että kehittäjillä voi olla erilaiset tulkinnat siitä, mitä ne merkitsevät käytännössä. Organisaatioissa voi olla tarpeen selkeyttää virtaviivaisten ja ketterien menetelmien korostaman arvojärjestelmän suhde organisaatiokulttuuriin ja edistää arvojohtamista ohjelmistokehitysprojekteissa. Väitöskirjassa käsitellään myös uusien jäsenten liittymistä avoimen lähdekoodin kehitysprojekteihin. Nämä kehitysprojektit toimivat pitkälti tietoverkon välityksellä, mikä tuo liittymiselle erityisiä haasteita. Tutkimuksessa mentorointia tarkastellaan erityisenä perehdytyksen tukimuotona, joka vaikuttaa kehittäjäkokemukseen. Mentoroinnin todetaan olevan lupaava lähestymistapa, joka auttaa kehittäjiä omaksumaan avoimen lähdekoodin projektiyhteisön käytäntöjä ja lausumattomia tapoja sekä nopeuttamaan heidän edistymistään aktiivisiksi jäseniksi. Mentorointi voi olla hyödyllistä myös muissa samankaltaisissa ympäristöissä, joissa käytetään virtuaalitiimejä.Prestation och framgång i programvaruutvecklingsprojekt beror till stor del på kognitiva, motivationella och emotionella faktorer samt grupprocesser. Programvaruutvecklares upplevelse av utvecklingsaktiviteten är en viktig framgångsfaktor som hittills inte har utforskats heltäckande. I denna doktorsavhandling används fallstudier för att utveckla en teori om utvecklarupplevelse. Teorin kan användas för att förbättra arbetsmiljöer för programvaruutveckling och den fungerar somreferensram för nya vetenskapliga studier. Avhandlingen presenterar dessutom nya resultat om utvecklarupplevelse i modern programvaruutveckling. Utvecklare inom Lean- och Agile-programvaruutveckling upplever strävan till hög prestanda som en kontinuerlig cykel av varseblivning, tolkning och anpassning. Toppresterande team har förmågan att utföra denna cykel framgångsrikt och samtidigt påverka prestationsförväntningar i och utanför den egna organisationen. Enligt avhandlingen lyfts värderingar fram som en särskild fråga för utvecklare. Lean- och Agile-programvaruutveckling betonar värderingar som bland annat fri interaktion mellan individer, kundsamarbete och ett positivt förhållningssätt till förändring. Undersökningen visar dock att förståelsen av värderingarna varierar och att utvecklare kan tolka värderingarnas praktiska betydelse på olika sätt. Det kan vara nödvändigt för organisationer att klargöra hur det värderingssystem som betonas i Lean- och Agile-metoder förhåller sig till organisationskulturen och att främja värdeledarskap i programvaruprojekt. Avhandlingen behandlar också integration av nya medlemmar i programvaruprojekt med öppen källkod. Dessa projekt fungerar främst via datanät, vilket leder till speciella utmaningar för nya medlemmar. I undersökningen granskas mentorskap som en speciell form av onboarding-stöd som påverkar utvecklarupplevelsen. Mentorskap visar sig vara ett lovande tillvägagångssätt som hjälper utvecklare att anta rådande praxis och tysta konventioner i utvecklingsprojekt med öppen källkod, och påskynda deras utveckling till aktiva medlemmar. Mentorskap kan också vara användbart i andra liknande sammanhang som använder virtuella team

    Measuring and tracking quality factors in Free and Open Source Software projects

    Get PDF
    Free and Open Source Software (FOSS) has gained increased interest in the computer software industry, but assessing its quality remains a challenge. FOSS development is frequently carried out by globally distributed development teams, and all stages of development are publicly visible. Several product and process-level quality factors can be measured using the public data. This thesis presents a theoretical background for software quality and metrics and their application in a FOSS environment. Information available from FOSS projects in three information spaces are presented, and a quality model suitable for use in a FOSS context is constructed. The model includes both process and product quality metrics, and takes into account the tools and working methods commonly used in FOSS projects. A subset of the constructed quality model is applied to three FOSS projects, highlighting both theoretical and practical concerns in implementing automatic metric collection and analysis. The experiment shows that useful quality information can be extracted from the vast amount of data available. In particular, projects vary in their growth rate, complexity, modularity and team structure.Intresset för fri och öppen programvara (Free and Open Source Software, FOSS) har ökat inom programvaruindustrin, men dess kvalitetsmätning är alltjämt en utmaning. FOSS-utveckling utförs ofta av globalt utspridda utvecklingsteam, och alla skeden av utvecklingen är synliga för allmänheten. Flera kvalitetsfaktorer på produkt- och processnivå kan mätas med hjälp av allmänt tillgängliga data. Denna avhandling presenterar en teoretisk bakgrund för programvarukvalitet och -metrik och deras användning i en FOSS-miljö. Avhandlingen presenterar information som kan samlas från tre informationsområden i FOSS-projekt, och konstruerar en kvalitetsmodell som är lämplig för användning i FOSS-sammanhang. Modellen innehåller mätare för både process- och produktkvalitetsfaktorer, och beaktar de verktyg och arbetsmetoder som ofta används i FOSS-projekt. En delmängd av den konstruerade kvalitetsmodellen appliceras på tre FOSS-projekt, vilket belyser både teoretiska och praktiska problemområden för implementering av automatisk metrikinsamling och -analys. Experimentet visar att det är möjligt att utvinna användbar information ur den väldiga datamängd som finns tillgänglig. Särskilt kan nämnas att projekten varierar i tillväxthastighet, komplexitet, modularitet och gruppstruktur

    Perspectives on natural language processing : Word disambiguation and automatic summaries

    Get PDF
    KandidatavhandlingAutomatisk språkprocessering har efter mer än ett halvt sekel av forskning blivit ett mycket viktigt område inom datavetenskapen. Flera vetenskapligt viktiga problem har lösts och praktiska applikationer har nått programvarumarknaden. Disambiguering av ord innebär att hitta rätt betydelse för ett mångtydigt ord. Sammanhanget, de omkringliggande orden och kunskap om ämnesområdet är faktorer som kan användas för att disambiguera ett ord. Automatisk sammanfattning innebär att förkorta en text utan att den relevanta informationen går förlorad. Relevanta meningar kan plockas ur texten, eller så kan en ny, kortare text genereras på basen av fakta i den ursprungliga texten. Avhandlingen ger en allmän översikt och kort historik av språkprocesseringen och jämför några metoder för disambiguering av ord och automatisk sammanfattning. Problemområdenas likheter och skillnader lyfts fram och metodernas ställning inom datavetenskapen belyses

    Guidelines for using empirical studies in software engineering education

    Get PDF
    Software engineering education is under constant pressure to provide students with industry-relevant knowledge and skills. Educators must address issues beyond exercises and theories that can be directly rehearsed in small settings. Industry training has similar requirements of relevance as companies seek to keep their workforce up to date with technological advances. Real-life software development often deals with large, software-intensive systems and is influenced by the complex effects of teamwork and distributed software development, which are hard to demonstrate in an educational environment. A way to experience such effects and to increase the relevance of software engineering education is to apply empirical studies in teaching. In this paper, we show how different types of empirical studies can be used for educational purposes in software engineering. We give examples illustrating how to utilize empirical studies, discuss challenges, and derive an initial guideline that supports teachers to include empirical studies in software engineering courses. Furthermore, we give examples that show how empirical studies contribute to high-quality learning outcomes, to student motivation, and to the awareness of the advantages of applying software engineering principles. Having awareness, experience, and understanding of the actions required, students are more likely to apply such principles under real-life constraints in their working life.Peer reviewe
    corecore